我的项目包括人物,活动和评论。
用户可以发表评论(不需要帐户)并可以参加活动。
我在人与事件之间使用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
答案 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 %>
或者您可以使用多重选择。