如何检查Rails中的关联属性?

时间:2015-08-11 14:41:06

标签: ruby-on-rails activerecord eager-loading

我有以下关系

User has_many Clients 通过 ClientMemberships

Client has_many Projects

Project belongs_to Client

给定特定用户。找到具有特定项目ID的用户的所有客户端的最佳方法是什么。

我不想遍历所有项目并使用ruby检查每个项目,而不是使用一些SQL来记住急切的负载。

3 个答案:

答案 0 :(得分:2)

@user.clients.joins(:projects).where("projects.id = ?", your_project_id)

答案 1 :(得分:1)

class User
  def clients_for_project_id(project_id)
    clients.joins(:projects).where(projects: { id: project_id })
  end
end

答案 2 :(得分:-1)

非常简单,使用public class FetchFromTCWebTask extends AsyncTask<String, Void, String> { MainActivity mainActivity; int requestId; FetchFromTCWebTask(MainActivity activity, int id) { mainActivity = activity; requestId = id; } ... @Override protected void onPostExecute(String result) { mainActivity.loadFinished(result, requestId); } public interface UIListner { public void loadFinished(String result, int id); public void loading(int progress); } } 在另一张桌子上执行该条件,并使用joins进行预先加载。

inculdes