在我的项目中,我有类似的东西:
class User < ActiveRecord::Base
has_many :roles
has_many :websites, through: :roles
end
class Website < ActiveRecord::Base
validates :name, presence: true
has_many :roles
has_many :users, through: :roles
end
class Role < ActiveRecord::Base
validates :name, presence: true
belongs_to :user
belongs_to :website
end
所以当我尝试做的时候:
User.first.websites.create(name: "First")
我有这个错误
ActiveRecord::RecordInvalid: Validation failed: Name can't be blank
如何在一行中创建新的用户网站?
答案 0 :(得分:0)
我认为如果您从validates :name, presence: true
模型中删除role
,那么它就可以正常运行。
答案 1 :(得分:0)
验证错误实际上来自Role模型,它还具有name属性的验证。
您可以使用accepts_nested_attributes_for
:
class Role < ActiveRecord::Base
validates :name, presence: true
belongs_to :user
belongs_to :website
accepts_nested_attributes_for :website
end
User.first.roles.create(name: "Role name", website_attributes: { name: "Website name" })