Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中使用联接表正确搜索模型?_Ruby On Rails_Rails Activerecord - Fatal编程技术网

Ruby on rails 如何在rails中使用联接表正确搜索模型?

Ruby on rails 如何在rails中使用联接表正确搜索模型?,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我正在尝试为用户事件设置设置模型和控制器。这是一个多对多的设置,用户可以注册活动。我已经创建了联接表(“用户\事件”) 到目前为止,我已经: 型号: class User < ActiveRecord::Base has_and_belongs_to_many :events, join_table: 'users_events' end class Event < ActiveRecord::Base has_and_belongs_to_many :users,

我正在尝试为用户事件设置设置模型和控制器。这是一个多对多的设置,用户可以注册活动。我已经创建了联接表(“用户\事件”)

到目前为止,我已经:

型号:

class User < ActiveRecord::Base
    has_and_belongs_to_many :events, join_table: 'users_events'
end

class Event < ActiveRecord::Base
    has_and_belongs_to_many :users, join_table: 'users_events'
end
class用户

我希望能够查询用户注册的所有事件。这个查询应该去哪里?在用户\控制器或事件\控制器中?搜索/查找代码是什么样子的?

首先,用户事件违反了rails惯例。Rails按字母顺序推断表名,因此表应命名为:events\u users

然后你可以做如下事情:

      current_user.events

event=event.create!(名称:“富”)

current_user.events我能够理解它。正如我在给Nikolai的回复中所阐述的,我也有一对多的关系,事件属于(由)用户,因此user.events给我的是用户创建的事件,而不是他们参加的事件。下面是我如何解决它的

class User < ActiveRecord::Base
    has_many :events
    has_and_belongs_to_many :attending_events, class_name: 'Event'
end

class Event < ActiveRecord::Base
    belongs_to :user
    has_and_belongs_to_many :attendees, class_name: 'User'
end
class用户
您只需做一个
用户即可。首先.events
要获取所有用户事件,无需定义
,请加入表格:“users\u events”
rails by convention可以自动映射,这只是一个示例。(如在伪代码中)。可以执行User.first或users=User.all;event=event.create!(名字:“foo”)然后是users.each do | u | u.events我想我假设不管发生什么事情,都会创建一个有很多参与者的事件,或者你可能会创建一个有很多事件的用户,然后它对用户来说是唯一的:)感谢关于连接表中字母顺序的提示,我不知道这一点。我本应该对我所做的更彻底。这些模型还具有一对多关系,即事件
属于:user
,而用户
具有多个:事件
。这是为了表明是谁创建了事件,因此
当前用户。events
向我提供了用户创建的事件,而不是他们注册的事件。@Nikolai Manek:请编辑答案,而不是评论。
class User < ActiveRecord::Base
    has_many :events
    has_and_belongs_to_many :attending_events, class_name: 'Event'
end

class Event < ActiveRecord::Base
    belongs_to :user
    has_and_belongs_to_many :attendees, class_name: 'User'
end