Ruby on rails 如何在创建方法之前停止使用ActiveRecord创建记录
如何让ActiveRecord接受下面的所有行。 User1将:name和:occulation保存到数据库中。 User2不需要存储在db中的“12”,但需要基于参数进行评估,然后使用一些默认值存储到db中。 User3是两者的组合Ruby on rails 如何在创建方法之前停止使用ActiveRecord创建记录,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如何让ActiveRecord接受下面的所有行。 User1将:name和:occulation保存到数据库中。 User2不需要存储在db中的“12”,但需要基于参数进行评估,然后使用一些默认值存储到db中。 User3是两者的组合 user1 = User.new(:name => "David", :occupation => "Artist") user2 = User.new(12) user3 = User.new(15, :name => "Mike", :occ
user1 = User.new(:name => "David", :occupation => "Artist")
user2 = User.new(12)
user3 = User.new(15, :name => "Mike", :occupation => "Programmer")
你的问题不是很清楚,但我会根据我的理解回答 在您的
用户
模型中应该可以使用类似的功能:
before_create :set_defaults
def set_defaults
return true unless default_case
case default_case
when 12
self.name = 'John'
self.occupation = 'Magician'
when 15
self.size = 'L'
end
end
然后,在创建新模型时:
User.new(:default_case => 15, :name => "Mike", :occupation => "Programmer")
如果set_defaults返回false怎么办?它会取消创建吗?没有,除非我弄错了。但是如果方法成功,我喜欢返回
true
。在保存之前,它与回调保持一致,其中true
表示成功。如果我使用User.new(15)而不是User.new(:default\u case=>15)我如何访问set\u defaults函数中的参数?据我所知,您将无法:构造函数执行哈希、块或nil
。所以,除非你的论点有一把钥匙,否则你将无法使用它。是否可以在保存前取消在中创建记录?如果是这样的话,我想我可以删除那里的数值参数。