Recently, after reading Object on Rails, I started thinking and experimenting with various ideas of making Rails applications code cleaner. Here’s one of these ideas.
Let’s imagine we have two model classes, connected with a has-many/belongs-to relation, e.g.:
# file user.rb class User < ActiveRecord::Base has_many :posts, dependent: :destroy # ... # rest of the user stuff # ... end
# file post.rb class Post < ActiveRecord::Base belongs_to :author, class: "User" end
The above code is probably how most of Rails programmers would go about implementing a “user has many posts/post belongs to its author” scenario. It’s the tutorials-approved way. But when you look at it from a architectonic point of view, you have just created a circular dependency.