0

Je continue de rencontrer des erreurs en utilisant ce code.Méthode non définie `users 'pour # <Post: 0xaa09664>

def create 
    new_post 
    @post.save! 

    (@post.users.uniq - [current_user]).each do |user| 
    Notification.create(recipient: user, actor:current_user, action: "posted", notifiable: @post) 
    end 

redirect_to post_index_path 

end 

Je ne sais pas pourquoi l'erreur se produit mais le message d'erreur indique que j'utilise « utilisateur » au lieu de « utilisateurs » mais je ne peux pas utiliser uniq faire. J'ai aussi plus d'erreurs à faire.

Edit: Voici mon message modèle:

class Post < ActiveRecord::Base 
    has_many :comments 
    belongs_to :user 
    belongs_to :subject 
    validates_presence_of :content 
end 

J'ai aussi un modèle de sujets:

class Subject < ActiveRecord::Base 
    has_many :posts 
    has_many :users, through: :posts 
    validates_presence_of :name 
    validates_uniqueness_of :name 
end 

modèle utilisateur:

class User < ActiveRecord::Base 

    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 

    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
    validates :name, presence: true 

    has_many :listings, dependent: :destroy 

    has_many :purchasing, class_name: "Transaction", foreign_key: "buyer_id", dependent: :destroy 
    has_many :sell, class_name: "Transaction", foreign_key: "seller_id", dependent: :destroy 


    has_many :purchased, class_name: "Archive", foreign_key: "buyer_id", dependent: :destroy 
    has_many :sales, class_name: "Archive", foreign_key: "seller_id", dependent: :destroy 

    has_many :selling_rooms, class_name: "Room", foreign_key: "seller_id", dependent: :destroy 
    has_many :buying_room, class_name: "Room", foreign_key: "buyer_id", dependent: :destroy 

    has_many :comments, through: :posts 
    has_many :posts 

    has_many :notifications, foreign_key: :recipient_id 


    def can_buy?(listing_price) 
    if self.points >= listing_price 
     true 
    else 
     false 
    end 
    end 

    def withdraw(listing_price) 
    self.points -= listing_price 
    end 


    def purchasing_list 
    purchasing.includes(:seller, :listing) 
    end 

    def purchased_list 
    purchased.includes(:seller, :listing) 
    end 

    def sell_list 
    sell.includes(:seller, :listing) 
    end 

    def sales_list 
    sales.includes(:seller, :listing) 
    end 
end 
+0

ce que vous essayez d'accomplir? Une publication appartient logiquement à un utilisateur, sauf si vous avez quelque chose de différent dans votre application. Donc, vous ne pouvez pas appeler la méthode 'users' sur un objet post –

+0

Bonjour et bienvenue dans Stack Overflow. Pouvez-vous nous donner une partie du code lié à cela? par exemple, comment un message est-il lié à un utilisateur? Un message a-t-il plus d'un utilisateur ou un seul? pouvez-vous nous montrer le message d'erreur complet? Pouvez-vous regarder dans les journaux de votre serveur (généralement 'log/development.log' ou sur l'écran de la console) et nous montrer les trois ou quatre lignes de noms de fichiers qui viennent directement après le message d'erreur? (ceux-ci nous aident à identifier la ligne de code exacte en lançant l'erreur). –

+0

Veuillez inclure les modèles Post et User (au moins les parties pertinentes) –

Répondre

1

Je devine que vous ne l'avez pas déclarer la relation de la bonne façon; Avez-vous dans votre modèle Post:

has_one :user 

Ou avez-vous déclarer

has_many :users 

Le comportement actuel devrait si elle est la première. Pour votre situation souhaitée, il est logique d'avoir le sens dans votre modèle utilisateur (user.rb)

has_many :posts 

et dans votre modèle Post

belongs_to :user 
+0

I avoir un has_many: utilisateurs dans un modèle de sujets qu'ils se sont connectés comme indiqué dans le modifier – CJK