比方說,你有以下型號:檢索模型屬性
class User < ActiveRecord::Base
has_many :comments, :as => :author
end
class Comment < ActiveRecord::Base
belongs_to :user
end
假設用戶有一個屬性的名字,有沒有用Ruby/Rails的任何方式使用表名來訪問它,列,類似於你在select或where查詢中輸入的內容? 喜歡的東西:
Comment.includes(:author).first.send("users.name")
# or
Comment.first.send("comments.id")
編輯:我試圖實現使用串正在訪問模型對象的屬性。對於簡單情況,我可以使用object.send attribute_name,但在訪問「嵌套」屬性時不起作用,如Comment.author.name。
基本上我想檢索使用在其中(使用的ActiveRecord的SQL的語法模型屬性),並選擇()方法,因此,例如:
c = Comment.first
c.select("users.name") # should return the same as c.author.name
編輯2:甚至更精確地,我想解決以下問題:
obj = ANY_MODEL_OBJECT_HERE
# Extract the given columns from the object
columns = ["comments.id", "users.name"]
不是'Comment.first.id'工作嗎?編輯 –