我试图写这个查询:
@myquery = Event.where("reservations.map(&:first)= ?", current_user.id)
但是我收到了这个错误:
ActionView::Template::Error (PG::SyntaxError: ERROR: syntax error at or near ":"
LINE 1: ...ECT "trips".* FROM "events" WHERE (reservations.map(&:first)= 1...
^
此查询的目标是在数组数组的第一个元素中查找用户ID,如:[[" 2"," 1"],[&#34 ; 4"," 1"]]其中2,4是用户ID。 我尝试了不同的解决方案,但仍有这个问题!
答案 0 :(得分:0)
有点困惑,但我猜你在尝试在0
和Users
之间创建多对多关系(即Events
有很多User
Events
有很多Event
)。
如果是这样,您不希望通过将所有user_id存储在Users
模型中来实现,反之亦然。你想要的是创建一个连接表,其中包含每个
Event
使用此结构,您告诉您的应用#database table
create_table "user_events", force: :cascade do |t|
t.integer "user_id"
t.integer "event_id"
t.datetime "created_at"
t.datetime "updated_at"
end
#join table
class UserEvents < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
#user
class User < ActiveRecored::Base
has_many :user_events, dependent: :destroy
has_many :events, through: :user_events
end
#event
class Event < ActiveRecord::Base
has_many :user_events, dependent: :destroy
has_many :users, through: :user_events
end
和Users
通过Events
相关,并且可以访问各种有用的关键字。
例如你可以做
UserEvents
将返回每个事件中第一个用户的所有id,这是我认为你想要完成的事情。