坑一
写了一个页面的查询,用的是ransack.
#model/order.rb
class Order < ActiveRecord::Base
has_one :score, as: :scoreable
end
#model/score.rb
class Score < ActiveRecord::Base
belongs_to :scoreable, polymorphic: true
end
这个是一个多态关联.在controller
中使用ransack
查询的时候碰到了一些问题.
- inlcudes
@q = Score.includes(:scoreable).result
@result = @q.result
这样页面会出错,r如下:
Cannot eagerly load the polymorphic association :scoreable
其实解决方案也很简单粗暴,在model
做下处理.
#score.rb
class Score < ActiveRecord::Base
belongs_to :scoreable, polymorphic: true
belongs_to :order, foreign_key: "scoreable_id"
end
然后 includes(:order)
就可以了.
- 页面查询也会存在问题.
<input name="q[scoreable_numero_cont]" />
这样也会报错,如下:
uninitialized constant Score::Scoreable
解决方法是可以用上面提到的.指定了foreign_key
的belongs_to.
<input name="q[order_numero_cont]" />
当然也可以使用ransack
提供的解决方案.
ransack链接
坑二
在写积分的平均分的时候,写了一个类方法去获取当前数据的平均分.(总分/条数).
#score.rb
...
def self.average
#do smt
end
会报错,是参数错误,换了一个方法名字就好了,这个问题会等有时间了继续追踪.
后续会补充遇到的坑.
网友评论