Ruby 关于 Rails 协会 objects
Ruby on Rails association objects
我是 Ruby Rails 的新手,所以如果这个问题听起来很愚蠢或者是重复的问题,请抱歉,但我已经搜索了答案但没有成功。
我有下面的例子
用户class
class User < ApplicationRecord
has_many :preference, dependent: :destroy
end
偏好class
class Preference < ApplicationRecord
belongs_to :user
end
所以我正在尝试使用以下代码创建一个新的首选项
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
谢谢
这里是你上面代码的一些想法
由于您使用 has_many,因此您必须遵循 rails 偏好约定(复数形式)
class User < ApplicationRecord
has_many :preferences, dependent: :destroy
end
偏好class
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
我是 Ruby Rails 的新手,所以如果这个问题听起来很愚蠢或者是重复的问题,请抱歉,但我已经搜索了答案但没有成功。
我有下面的例子
用户class
class User < ApplicationRecord
has_many :preference, dependent: :destroy
end
偏好class
class Preference < ApplicationRecord
belongs_to :user
end
所以我正在尝试使用以下代码创建一个新的首选项
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
谢谢
这里是你上面代码的一些想法
由于您使用 has_many,因此您必须遵循 rails 偏好约定(复数形式)
class User < ApplicationRecord
has_many :preferences, dependent: :destroy
end
偏好class
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