活动登记表

时间:2015-10-19 04:38:35

标签: ruby-on-rails ruby-on-rails-4

新手在这里......

我正在尝试创建一个事件注册页面,任何人都可以在不登录系统的情况下注册事件。

我的问题是试图弄清楚如何将注册信息与特定事件联系起来。我已经创建了所有关联,但无法告诉数据库如何告诉数据库该人正在注册特定事件。

以下是我的协会:

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

提前致谢

1 个答案:

答案 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 %>

Foreign Keys

为了理解其工作原理,您最好看一下名为外键的内容......

enter image description here

这是一种关系数据库原则,允许您将两个或多个记录关联到不同的数据库表中。

由于Rails旨在与关系数据库一起使用,因此您使用的每个association都需要使用&#34;外键&#34;在一些方面。

在您的情况下,我建议使用has_many/belongs_to relationshipenter image description here

您需要确保将event_id列添加到registrations数据库。