我正在寻找人们使用Rails时良好*实践的例子。
我有一对如:
before_filter
调用在控制器类名称声明下面,而不是其他地方。BaseController
,而不是ApplicationController
。永远只有一个ApplicationController
。attr_*
方法定义在各自类的顶部。attr_*
方法之后,或在模型的顶部。private
方法。现在我不是在寻找Ruby的良好实践,而是更多的Rails专用列表。上面列出的只是一个例子,而不是福音。
*我不想使用“最佳实践”这个术语,因为最好的意思是最终实践,在所有代码中,人们可能不同意。
答案 0 :(得分:3)
我发现一种非常一致的做法是括号是合适的。像验证和关联这样的DSL类宏看起来很自然,没有它们,而带有显式接收器和参数的方法看起来更好。
has_many :users
User.find_all_by_field(my_var)
VS
has_many(:users)
User.find_all_by_field my_var
答案 1 :(得分:3)
我在attr_accessible*
声明后加has_*
我确实记得如果我没有按上述顺序声明错误。 (明天我将重新创建这个问题并重新确认)
试了一下:
使用:
has_one :something
accepts_nested_attributes_for :something
但这引发了错误:
No association found for name 'something'. Has it been defined yet?
:
accepts_nested_attributes_for :something
has_one :something
我认为,我收到此错误的原因是因为我在something
来电之前scope
使用了has_one
。
如果您在(例如,索引)视图中执行@posts.something
并获得nil
错误,但您知道索引操作中的@posts = Post.find
正在工作,加倍确定你在控制器类代码中的某个地方(很可能是较低的地方)没有另一个(很可能是空的)def index
!