新手在这里......
我正在尝试创建一个事件注册页面,任何人都可以在不登录系统的情况下注册事件。
我的问题是试图弄清楚如何将注册信息与特定事件联系起来。我已经创建了所有关联,但无法告诉数据库如何告诉数据库该人正在注册特定事件。
以下是我的协会:
class Event < ActiveRecord::Base
belongs_to :user
has_many :event_regs
has_many :regs, through: :event_regs
class Reg < ActiveRecord::Base
has_many :event_regs
class Reg < ActiveRecord::Base
has_many :event_regs
提前致谢
答案 0 :(得分:3)
新手在这里
欢迎!
这是您需要的:
#app/models/event.rb
class Event < ActiveRecord::Base
has_many :registrations
end
#app/models/registration.rb
class Registration < ActiveRecord::Base
belongs_to :event
end
这将允许您使用以下内容:
#config/routes.rb
resources :events do #-> url.com/events/:id
resources :registrations #-> url.com/events/:event_id/registrations/
end
#app/controllers/registrations_controller.rb
class RegistrationsController < ApplicationController
def new
@event = Event.find params[:event_id]
@registration = @event.registration.new
end
def create
@event = Event.find params[:event_id]
@registration = @event.registration.new registration_params
end
private
def registration_params
params.require(:registration).permit(:all, :your, :params)
end
end
这将在您的数据库中创建一条新的registration
记录,并将其与您通过该路径访问的Event
记录相关联。
-
通过此设置,您将能够使用以下内容:
#app/controllers/events_controller.rb
class EventsController < ApplicationController
def show
@event = Event.find params[:id]
end
end
#app/views/events/show.html.erb
<% @event.registrations.each do |registration| %>
# -> output registration object here
<% end %>
为了理解其工作原理,您最好看一下名为外键的内容......
这是一种关系数据库原则,允许您将两个或多个记录关联到不同的数据库表中。
由于Rails旨在与关系数据库一起使用,因此您使用的每个association都需要使用&#34;外键&#34;在一些方面。
在您的情况下,我建议使用has_many/belongs_to
relationship:
您需要确保将event_id
列添加到registrations
数据库。