Ruby on Rails关联对象

问题描述 投票:0回答:1

我是Ruby on Rails的新手,所以如果问题听起来很愚蠢或是一个重复的问题,请抱歉,但我已经找到了答案,但没有成功。

我有以下示例

用户类

class User < ApplicationRecord
    has_many :preference, dependent: :destroy
end

偏好类

class Preference < ApplicationRecord
    belongs_to :user
end

所以我正在尝试使用以下代码创建一个新的Preference

preference = PreferenceService.validate_start_and_end_date(Preference.new(preference_params))

然后我想保存如下

current_user.preference.save(preference)

我尝试了多种方法但没有成功。我正在使用ruby 2.5.3p105和Rails 5.2.1.1

谢谢

ruby-on-rails ruby associations
1个回答
2
投票

这里有一些关于上面代码的想法

因为你使用has_many,你必须遵循带有首选项的rails约定(复数形式)

class User < ApplicationRecord
  has_many :preferences, dependent: :destroy
end

偏好类

class Preference < ApplicationRecord
    belongs_to :user
    validate :valid_start_and_end_date?

private

  def valid_start_and_end_date?
    # here you do rule validation for start_date and end_date field
    # for example you check end_date value must greater than or equal start_date
    start_date <= end_date
  end
end

使用此步骤创建首选项

since each preference must have a user then first you must 
@preference = Preference.new(preference_params)
@user = User.find_by_username("johndoe")
@preference.user = @user
@preference.save
© www.soinside.com 2019 - 2024. All rights reserved.