我不明白这行代码:
@club = current_user.clubs.build(club_params)
我知道可以使用new
方法创建相同的代码,然后我们可以保存实例变量,但是build
在这种情况下会做什么?
答案 0 :(得分:3)
new用于特定模型的新实例:
foreach (var message in messages)
{
// Get Body first
var body = System.Text.Encoding.UTF8.GetBytes(message["Body"].ToString());
// Empty Body section to deserialize properties
message["Body"] = "";
var SBMessage = JsonConvert.DeserializeObject<Message>(message.ToString());
SBMessage.Body = body;
log.LogInformation("Sending Message");
outputSbQueue.Add(SBMessage);
log.LogInformation("Sent message: " + SBMessage.MessageId);
}
build用于在AR关联中创建新实例:
foo = Foo.new
或
bar = foo.build_bar # (has_one or belongs_to)
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
更新
build和new是ActiveRecord::Relation中定义的别名:
因此,如果类Foo拥有has_many Bars,则以下内容具有相同的效果:
bar = foo.bars.build # (has\_many, habtm or has_many :through)
<=> foo.bars.new
foo.bars.build
<=> Bar.where(:foo_id=>foo.id).new
如果Bar.where(:foo_id=>foo.id).build
!foo.new_record?
<=> foo.bars.new
答案 1 :(得分:0)