在has_many关联中添加数据

时间:2015-03-09 16:04:15

标签: ruby-on-rails ruby associations has-many-through

我的项目包括人物,活动和评论。

用户可以发表评论(不需要帐户)并可以参加活动。

我在人与事件之间使用has_many: through关联,但无论我尝试什么,我都无法将人添加到事件中。

我不知道如何选择某人并将此人添加到event_people表格。

模特

class EventPeople < ActiveRecord::Base
belongs_to :event
belongs_to :people
end

class Event < ActiveRecord::Base
validates :title, presence:true, length: {minimum: 3}
validates :date_from, presence:true
validates :date_to, presence:true
validates :time_from, presence:true
validates :time_to, presence:true
has_many :comments, dependent: :destroy
has_many :people, :through => :event_people
has_many :event_people
end

class People < ActiveRecord::Base
validates :name, presence: true
validates :email, presence: true, length: { minimum: 5}
validates :birthdate, presence: true
has_many :comments
has_many :events, :through => :event_people
has_many :event_people
end

显示来自eventcontroller的方法

def show
@event = Event.find(params[:id])
end

create_table "event_people", force: true do |t|
t.integer  "event_id"
t.integer  "people_id"
t.datetime "created_at"
t.datetime "updated_at"
end

2 个答案:

答案 0 :(得分:0)

删除 has_many :event_people 在您的人员和活动类

您的迁移应如下所示:

create_table "event_people" do |t|
  t.belongs_to  :event
  t.belongs_to  :people
  t.timestamps
end

答案 1 :(得分:0)

你可以像klausinho建议的那样单独添加它们,为EventPeople添加一个你一次添加一个人的地方。

或者has_many关联会为您提供有关事件的people_ids=方法。因此,您可以使用collection check boxes

<%= form_for @event do |f| %>
  <div class="field">
    <%= f.collection_check_boxes(:people_ids, People.order(:name), :id, :name)
  </div>
<% end %>

或者您可以使用多重选择。