ruby-on-rails - 加入 Tables & Rails

标签 ruby-on-rails activerecord associations

我有事件和用户/团队。

class Event
  has_many :users, :through => :registrations
end
class User
  has_many :events, :through => :registrations
end
class Registration
  belongs_to :users
  belongs_to :events
end

当我注册用户时,我会像这样将他们连接到事件:

@event.users << @user

这是否隐含地为用户/事件创建了注册对象?我在我的注册迁移中放了一个 :goal_amount 列,我希望能够在创建注册时设置 :goal_amount。我是否需要显式创建注册(即:Registration.create(:user_id => @user.id, :event_id => @event.id, :goal_amount => params[:goal_amount])实现这一目标?

最佳答案

是的,将用户添加到事件会自动创建关系对象。
是的,如果您希望在中间表中添加该参数,则必须手动创建关系。

让它看起来更酷的一个解决方案是在事件对象中创建一个 add_user 方法。

def add_user user, goal_amount
    Registration.create({
        :user => user,
        :event => self,
        :goal_amount => goal_amount)
    })
end

然后你只需要调用

@event.add_user @user, 100

关于ruby-on-rails - 加入 Tables & Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369341/

相关文章:

node.js - Sequelize : Error creating a post and associating it with the current user

ruby-on-rails - rails : Resetting form fields with page refresh

javascript - rails : How to escape_javascript with client-side AJAX request

mysql - ActiveRecord MySQL 在查询期间丢失与 MySQL 服务器的连接

php - 将属性添加到与 Doctrine 的 QueryBuilder 关联的子实体

node.js - Sequelize 通过关联创建

ruby-on-rails - Ruby on Rails/Paperclip Gem : Does not resize images, 似乎只保存 'original' 图像

ruby-on-rails - 从应用程序中强行停止延迟的工作人员

PHP Adodb Active Record SQL 注入(inject)

php - 带有嵌套的 Codeigniter Active Record "SELECT WHERE"