类Issue继承自ActiveRecord (Ruby1.9.3p429(40747-05-15修订版) x86_64-linux,Rails 3.2.13)。在这个类中,我尝试执行以下select操作:
results = Issue.find_by_sql("select id, notes from mydb.issues;")
results.each do |r|
puts r.notes.class.name
end每一行的输出都是NilType。
字段notes的类型是text (MySQL,Ver14.14Distrib5.5.31,用于debian-linux-gnu (x86_64),使用readline6.2)。这是这个字段中的一些文本,我可以在MySQL工作台上看到它。
为什么会发生这种情况?如何正确访问这样的字段?
发布于 2013-07-22 23:45:42
根据@Frederick Cheung和@Salil提供的指针,我发现Issue类具有以下定义:
delegate :notes, :notes=, :to => :current_journal, :allow_nil => true当然,在结果记录集中更改名称notes可以解决这个问题。
发布于 2013-07-22 22:28:05
您可能已将notes添加为attr_protected
class Issue < ActiveRecord::Base
attr_protected :notes
end
issue = Issue.new("notes" => "Some notes here")
issue.notes # => nil发布于 2013-07-22 22:28:43
我认为你这样做是错误的,你已经从你的表中选择了所有的注释,现在你的results对象包含了数组中的所有注释,所以你只需要遍历它:
如果你有另一个'Note‘模型,那么你必须这样做:
results = Issue.find_by_sql("select * from mydb.issues;")
results.each do |r|
puts r.notes.class.name
end或者,如果您的问题表中有备注字段,则应执行以下操作:
results = Issue.find_by_sql("select notes from mydb.issues;")
results.each do |r|
puts r.class.name
end希望这能有所帮助。谢谢
https://stackoverflow.com/questions/17789860
复制相似问题