我有一个名为药物的表的迁移和模型。我需要从药物表中选择一个特定的行。我也试图过滤掉所有没有当前用户身份的药物。
这是我目前的代码。
Medication.find(:name, :conditions => { :user_id => current_user.id }, :order => "Medication.name")
我知道这不完整,但我们将非常感谢任何帮助。
答案 0 :(得分:1)
您可以像这样加载特定user_id的第一种药物(假设您的药物表有user_id):
Medication.where(:user_id => current_user.id).order(:name).first
如果我们的User
模型有belongs_to :medications
,则可以简化为:
current_user.medications.order(:name).first
如果你想加载例如第5次用药只需加4:
current_user.medications.order(:name).offest(4).first
或加载所有药物并反复进行:
current_user.medications.limit(10).each do |medication|
puts medication.name
end
如果您想在网站上输出前十种药物,您可以这样做:
# in the controller
@medications = current_user.medications.order(:name).limit(10)
# in the view
<ul>
<% @medications.each do |medication| %>
<li><%= medication.name %></li>
< end %>
</ul>
您使用的finder语法已弃用,已在Rails 4中替换。请参阅Rails Guide about querying the database。
答案 1 :(得分:0)
如果您尚未设置has_many :through
关联,这是一个完美的用例。
class User < ActiveRecord::Base
has_many :prescriptions # or whatever
has_many :medications, :through => :prescriptions
end
class Prescription < ActiveRecord::Base
belongs_to :user
belongs_to :medication
end
class Medication < ActiveRecord::Base
has_many :prescriptions
has_many :users, :through => :prescriptions
end
现在,您可以执行@user.medications
之类的操作,仅检索该用户的药物,@user.medications.find(params[:medication_id]
以查找用户指定药物中的特定药物,{{1}向用户添加药物,等等。
这是对这种技术的基本概述,但它是一个基本的Rails概念,因此有大量关于用例的信息接近你可能想做的任何事情。
答案 2 :(得分:0)
我解决了问题,我决定发布答案,以防其他任何人遇到类似的问题。
我最终没有在控制器中放置任何东西或者在我的模型中添加任何新内容。我只是在视图中使用了这行代码。
<%= Medication.offset(0).where(:user_id => current_user.id).pluck(:name).first %>
如果没有发布的所有人的支持,我无法做到,谢谢!