使用Rails 3.2.9
我正在尝试使用.build而不是.create构建一个关联,但是获得了一个密码验证错误,我似乎无法找到解决方法。
点评如下:
我理解保存具有使用.build构建的关联的项目的方式,您实际上必须在所有者上执行保存。如果你在@item上进行保存,它只会创建项而不是关联(意味着它不会保存到数据库,直到current_owner.save)。当我对所有者进行保存时,由于密码不符合验证要求,我遇到了错误。因为我需要为密码实现不同的解决方案,或者只是停止抱怨并使用.create而不是.build,有没有办法在我执行保存时绕过验证。
下面给出的密码不符合验证错误
@item = current_owner.items.build(params[:item])
if current_owner.save
Do some other work with item
end
我想我可以做以下事情(出于某种原因,对我来说似乎很脏也许不是。想法?)
@item = current_owner.items.create(params[:item])
if !@item.nil?
Do some other work with item
end
表格设置: 业主:
项目:
items_owners:
型号:
class Item < ActiveRecord::Base
attr_accessible :description, :name, :owner_ids
has_many :items_owner
has_many :owners, :through => :items_owner
end
class Owner < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :password, password_confirmation
has_many :items_owner
has_many :items, :through => :items_owner
before_save :encrypt_password
validates :password, :presence => true,
:confirmation => true,
:length => { :within => 6..40 }
end
class ItemsOwner < ActiveRecord::Base
attr_accessible :owner_id, :item_id
belongs_to :item
belongs_to :owner
end
答案 0 :(得分:0)
我对你的问题不太了解。希望这会有所帮助:
@item = current_owner.items.build(params[:item])
if @item.valid?
# item is valid and ready to save to DB
else
# item is not valid.
end
答案 1 :(得分:0)
您的模型中有密码验证,需要密码存在。你可以做的是如下
@item = current_owner.items.build(params[:item])
if @item.valid?
@item.save
# do stuff what you want
else
# item is not valid.
end
希望它会有所帮助