0

Rails コンソールで User.first と Post.first を実行すると正常に動作します。Post.first.user は正常に動作しますが、User.first.posts で Undefined method エラーが発生します

モデル:

class User < ActiveRecord::Base
    attr_accessible :role :user_email, :user_name

    has_many :posts
end

class Post < ActiveRecord::Base
    attr_accessible :content, :status, :title, :user_id

    belongs_to :user
    has_many :comments
end

新しいプロジェクトを作成するとすべてうまくいきますが、この場合は別のことをしました。既存のデータベース (sqlite) を別の Web アプリケーション (非レール) からレールに適合させました。私がしたことは、レールの規則に合わせて列の名前を変更することでした。以前はユーザー名を一意のキーとして使用し、それを使用して投稿所有者にリンクしていましたが、列名を user_id に変更し、すべての値を関連するユーザー ID に更新しました。列の型と値も int 値に変更しました。

コメントにも同じことが言えます: Comment.first.post は機能しますが、Post.commments は未定義のメソッド エラーを返します。

User.joins(:post(s)) を実行すると、「'posts' という名前の関連付けが見つかりませんでした」というエラーが表示されますが、Post.joins(:user) は正常に動作します。

編集: 残念ながら、関連性がないと思われる関連情報を省略しました。

とにかく-ロールという列があったため、ユーザーモデルにはattr_accessible :roleがありました---一度>すべてが意図したとおりに機能することを削除しました。

しかし、なぜこれが違いを生む必要があるのか​​ わかりません。これ: > https://github.com/ryanb/cancan/wiki/Role-Based-Authorizationユーザー モデルには :role があり、 > ユーザー ベースのアプリには has_many 依存関係があると想定し、私のように失敗します。

...または、私が見逃しているものは他にありますか?

4

0 に答える 0