BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(Rails道場レッスン IV)

rubyの書き方ミス

論外ですな・・。

#没
def user{
    return User.find_by(id: self.user_id)
  }

#正解
def user
    return User.find_by(id: self.user_id)
  end

バリデーションのカンマ忘れ

#没
validates :user_id {presence: true}

#正解
validates :user_id, {presence: true}

その人がいいねした投稿の一覧

#没
def likes
    @user = User.find_by(id: params[:id])
    @likes=Like.where(user_id: @user.id)
    @posts=Post.where(id: @likes.post_id)
  end
#没
<% @posts.each do |post| %>
      <div class="posts-index-item">
              
        <div class="post-left">
          <img src="<%= "/user_images/#{post.user.image_name}" %>">
        </div>
          
        <div class="post-right">
          <div class="post-user-name">
            <%= link_to( "#{post.user.name}", "/users/#{post.user.id}" ) %>
          </div>
          <%= link_to(post.content, "/posts/#{post.id}") %>
        </div>
      </div>
    <% end %>

#正解
def likes
    @user = User.find_by(id: params[:id])
    @likes=Like.where(user_id: @user.id)
  end
#正解
<% @likes.each do |like| %>
    
      <% post=Post.find_by(id:like.post_id) %>
    
      <div class="posts-index-item">
              
        <div class="post-left">
          <img src="<%= "/user_images/#{post.user.image_name}" %>">
        </div>
          
        <div class="post-right">
          <div class="post-user-name">
            <%= link_to( "#{post.user.name}", "/users/#{post.user.id}" ) %>
          </div>
          <%= link_to(post.content, "/posts/#{post.id}") %>
        </div>
      </div>
    <% end %>

has_secure_passwordの設定の仕方

演習ではこれで行けた気がするけど、なぜかハッシュ化ができなかったというか、コンソールでパスワードを設定するとエラーになった。謎や

#没
class User < ApplicationRecord
  validates :name, {presence: true}
  validates :email, {presence: true, uniqueness: true}
  
  def posts
    return Post.where(user_id: self.id)
  end

  def has_secure_password
  end

end

#正解
class User < ApplicationRecord
  has_secure_password
  validates :name, {presence: true}
  validates :email, {presence: true, uniqueness: true}
  
  def posts
    return Post.where(user_id: self.id)
  end
  
end