Rails 自我与联想
Rails self and association
我有车和用户模型。
User.rb
has_many :cars
Car.rb
belongs_to :user
我只想验证汽车模型中的模型字段,前提是它的用户 mdk_id
不是 nil。
这就是我创建汽车模型的方式,
user = User.where(mdk_id: b["companyid"]).first
car = user.cars.build
然后在 Car.rb
模型中,我想验证 model
字段。
我试过了;
validates :model if self.user.mdk_id != nil
但是报错;
undefined method `user' for #<Class:0x007f973a321a58>
我如何引用它?
您可以在 Car.rb
中执行这些操作
validate :validate_user, on: [:create, :update]
def validate_user
if self.user.mdk_id == nil
#display error message here
#such as User's mdk_id cannot be null etc.
end
end
您可以像这样将 proc 传递给 if 选项:
validates :model, presence: true, if: proc { |car| car.user.mdk_id? }
(我假设您需要验证该字段是否存在,如果需要,您可以更改验证)。
请查看有关此主题的 rails guides。
添加这样的验证:
validates :model if self.user.mdk_id != nil
不会工作,因为 self
这里是 class Car
但验证将在 Car
的实例上进行。此外,您需要指定所需的验证类型。
说,只要汽车有用户并且用户设置了 mdk_id
,您希望 model
字段有一个值(强制),那么您可以按如下方式进行:
# car.rb
validates :model, presence: true, if: -> { self.user && self.user.mdk_id.present? }
我有车和用户模型。
User.rb
has_many :cars
Car.rb
belongs_to :user
我只想验证汽车模型中的模型字段,前提是它的用户 mdk_id
不是 nil。
这就是我创建汽车模型的方式,
user = User.where(mdk_id: b["companyid"]).first
car = user.cars.build
然后在 Car.rb
模型中,我想验证 model
字段。
我试过了;
validates :model if self.user.mdk_id != nil
但是报错;
undefined method `user' for #<Class:0x007f973a321a58>
我如何引用它?
您可以在 Car.rb
中执行这些操作validate :validate_user, on: [:create, :update]
def validate_user
if self.user.mdk_id == nil
#display error message here
#such as User's mdk_id cannot be null etc.
end
end
您可以像这样将 proc 传递给 if 选项:
validates :model, presence: true, if: proc { |car| car.user.mdk_id? }
(我假设您需要验证该字段是否存在,如果需要,您可以更改验证)。
请查看有关此主题的 rails guides。
添加这样的验证:
validates :model if self.user.mdk_id != nil
不会工作,因为 self
这里是 class Car
但验证将在 Car
的实例上进行。此外,您需要指定所需的验证类型。
说,只要汽车有用户并且用户设置了 mdk_id
,您希望 model
字段有一个值(强制),那么您可以按如下方式进行:
# car.rb
validates :model, presence: true, if: -> { self.user && self.user.mdk_id.present? }