我花了太多时间本来应该是一个简单的解决方案。我的模型中有这个代码。
class Forum < ActiveRecord::Base
validates :name, presence: true
belongs_to :project
has_many :topics
15 has_many :posts, -> {order "posts.created_at DESC" }, through: :topics, do
def last
@last_post ||= find(:first, include: :account)
end
end
37 end
当我尝试在下面运行此测试时,
test "should list only top level topics" do
assert_models_equal [topics(:sticky), topics(:il8n),
topics(:ponies), topics(:pdi)],
forums(:rails).topics
end
我得到了这个恼人的错误
forum.rb:15: syntax error, unexpected keyword_do_block (SyntaxError)
forum.rb:37: syntax error, unexpected keyword_end, expecting end-of-input
我在上面标出了发生错误的行。如果我注释掉有许多关联的&amp; extensions部分,则测试继续并且错误输出。我究竟做错了什么? 我已经检查了下面显示的has_many关联的Rails API语法。
has_many(name, scope = nil, options = {}, &extension)
语法顺序正确,为什么会返回语法错误?帮助将不胜感激。感谢。
答案 0 :(得分:1)
do
has_many :posts, -> {order "posts.created_at DESC" }, { through: :topics } do
看一下这个链接