通过验证将属性写入我的直通表?

时间:2009-10-19 22:48:12

标签: ruby-on-rails ruby validation activerecord

我多年来一直试图这样做,似乎可以抓住它。希望有人能帮忙吗?

我有一个'消息'模型,它与'contact_detail'模型有很多“分配”关系。

基本上一条消息可以有很多与之关联的联系人,一个联系人可以有很多消息。

我可以让它工作并成功保存它但我想在'distribute'模型上有一个creater属性,我想为消息的创建者设置为true。

我的表格参数如下:

{“message”=> {“message”=>“一条好消息...”,  “messagable_id”=> “中58”,  “title”=>“你好吗?”,  “messagable_type”=> “中MachineEnquiry”,  “message_type_id”=> “中1”,  “contact_detail_ids”=> [ “2”,  “2”,  “11”,  “7”]},  “commit”=>“发送消息”,  “日期时间”=> “中”}

'distributes'模型有一个contact_detail_id'属性,这是全部保存但在保存之前我想设置create属性和contact_detail_id。

我可以在保存之后这样做,但我想验证创建者已经设置好所以我必须在保存之前做到这一点不要我吗?并且不确定如何做到这一点。

有什么想法吗?希望有人可以提供帮助吗?

提前谢谢 瑞克

1 个答案:

答案 0 :(得分:0)

从描述事物的方式来看,创建者应该对与特定消息相关联的每个分发记录都相同。保存更有意义的是向Message添加新列和belongs_to关系。

class Message < ActiveRecord::Base
  belongs_to :creator, :class_name => "User" # links creator to your User model
  validates_presence_of :creator_id # ensures creator_id is not empty

  ...
end

从表单填写该字段就像添加

一样简单
<%= f.hidden_field :creator_id, current_user.id %>

如果我认为同一消息的分发记录将具有相同的创建者,那么您应该查看accepts_nested_attributes_for以将详细信息从表单传递给相关模型。