2013-03-17 39 views
1

我有以下模式:如何通过用户的电子邮件地址筛选rails对象?

class Iosapp < ActiveRecord::Base 
    belongs_to :user 
    attr_accessible :active, :featured, :name, :partner 

    validates :name, :presence => true 
end 

我说引用与在视图中的Iosapp对象相关联的用户:

<%= @iosapp.user.email %> 

在控制器中,我现在有下面是什么。但是,如何更改它以便它只返回具有特定电子邮件地址的对象(例如[email protected])?

@iosapps = Iosapp.all 

回答

1

试试这个:

@iosapps = Iosapp.joins(:user).where(:users => {:email => '[email protected]'}).all 

编辑:

或者,如果你想用iosapp数据返回的用户数据,那么这样的:

@iosapps = Iosapp.includes(:user).where(:users => {:email => '[email protected]'}).all 
+0

我得到一个错误说:没有这样的列:user.email:选择 “iosapps” * FROM “iosapps” INNER JOIN “用户” ON “用户”, “ID”=“IO sapps”。 “user_ID的” WHERE “用户”, “电子邮件”= '[email protected]' – sharataka 2013-03-17 17:54:48

+2

它应该是'users.email'不'user.email',你可能需要构造加入其中,像这样'。 where(“users.email =?”,'[email protected]')' – house9 2013-03-17 17:59:36

+0

修正了错字,再试一次。这个错字正如house9所建议的那样。 – Sam 2013-03-17 18:01:27

相关问题