【发布时间】:2014-02-19 02:33:23
【问题描述】:
当我直接查询我的数据库时,我得到了预期的结果,但不是在 rails 中。我猜这与我的联想有关,以及我 3 年前对 Ruby 说过的一些坏话。
Postgres SQL 查询:
SELECT users.email, members.software, members.files
FROM users INNER JOIN members
ON members.user_id = users.id
WHERE members.region_id=2
结果:"dan@gmail.com";t;t "dan@test.com";t;t
但是来自rails c:
> ←[1m←[36mUser Load (1.0ms)←[0m ←[1mSELECT users.email,
> members.software, members.files FROM "users" INNER JOIN "members" ON
> "members"."user_id" = "users"."id" WHERE "members"."region_id" =
> 2←[0m> => #<ActiveRecord::Relation [#<User id: nil, email: "dan@gmail.com">, #<User id: nil, email: "dan@test.com">]>
那个 sn-p 是通过粘贴我试图在我的控制器中创建的内容并硬编码区域 ID 得到的查询:
User.joins(:members).select("users.email, members.software, members.files").where(members: {region_id: params[:id]})
这些是我的模型:
class User < ActiveRecord::Base
has_many :members
has_many :regions, :through => :members
end
class Region < ActiveRecord::Base
has_many :members
has_many :users, :through => :members
end
class Member < ActiveRecord::Base
belongs_to :user
belongs_to :region
end
这是我关联模型的方式还是我缺少的其他东西?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord