
Алиф
06.10.2017
16:20:17
User.rb
has_many :posts, dependent: :destroy, foreign_key: "author_id", class_name: "Post"
@vasivas

Mighty
06.10.2017
16:21:13
Тебя не смущает что в обоих взаимосвязях ты проставил foreign key?

Google

Mighty
06.10.2017
16:21:43
Зачем то ключи явно прописал

Aldar
06.10.2017
16:21:44
у юзера убери foreign_key

Mighty
06.10.2017
16:21:50
Хотя они автоматом подтягиваются
Максимум класс нужен

Aldar
06.10.2017
16:22:00
User.rb
has_many :posts, dependent: :destroy

Алиф
06.10.2017
16:22:31
убрал

Aldar
06.10.2017
16:22:32
больше ничего не надо

Алиф
06.10.2017
16:22:36
ActiveModel::MissingAttributeError:
can't write unknown attribute `author_id`
ну не работает

Aldar
06.10.2017
16:23:25
schema.rb покажи

Алиф
06.10.2017
16:23:51
ActiveRecord::Schema.define(version: 20171005104835) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.bigint "author_id"
t.datetime "published_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["author_id"], name: "index_posts_on_author_id"
end
create_table "users", force: :cascade do |t|
t.string "nickname"
t.string "email"
t.string "password_digest"
t.string "token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["token"], name: "index_users_on_token", unique: true
end
add_foreign_key "posts", "users", column: "author_id"
end

Google

Vasiliy
06.10.2017
16:23:52
кстати да
а миграции к тестовой бд применял?

Алиф
06.10.2017
16:24:48
нет наверно
где проблема ?

Rustam
06.10.2017
16:26:42
ты же явно видишь в ошибке

Mighty
06.10.2017
16:27:40
Это в принципе потому что по дурацки модели и таблицы назвал
Более того, в юзерах я и индекс ключа не вижу

Алиф
06.10.2017
16:28:08
как мне справить ?
где ошибка ?

Mighty
06.10.2017
16:28:16
Где идентификатор то ?

Алиф
06.10.2017
16:29:39
не понял

Rustam
06.10.2017
16:30:43
там написано, что ты передпл число, когда activerecord инфернуть обьект типа юзер пытается. либо передавай author_id: user.id, либо author: user
хотя я есесно без понятия что у тебя там за таблица

Mighty
06.10.2017
16:31:18

Vasiliy
06.10.2017
16:31:24

Mighty
06.10.2017
16:31:26
Перед тем как писать
Короче
1. Модели назвал одним образом, ассоциации другим
2. Первичный ключ у юзера просто проебал
Судя по схеме
А не, второй пункт выкинь , схема не отражает дефолт постгреса

Rustam
06.10.2017
16:33:16
у меня только пост с ошибкой и вопросы про него, остальное о DI и bestpractics

Google

Rustam
06.10.2017
16:33:47
похожу у меня тут целого контекста обсуждения нет. посты не засинкалисб чтоли

Алиф
06.10.2017
16:36:31
не понимаю ну что я понял что мне нужно int insted of bigint
для это t.bigint "author_id"
нет не помагает :(

Aldar
06.10.2017
16:46:46
поменял bigint на int?

Алиф
06.10.2017
16:47:20
да ну не помагает
@hardliner

Aldar
06.10.2017
16:49:48
поменял и не помогает?

Алиф
06.10.2017
16:50:49
да
ну не помагает

Aldar
06.10.2017
16:51:13
покажи schemarb опять

Алиф
06.10.2017
16:51:15
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.integer "author_id"
t.datetime "published_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["author_id"], name: "index_posts_on_author_id"
end
@hardliner

Aldar
06.10.2017
16:51:35
ошибка какая?

Алиф
06.10.2017
16:52:10
когда так author: user, `ActiveModel::MissingAttributeError:
can't write unknown attribute author_id
`
@hardliner API app

Aldar
06.10.2017
16:53:58
а если попробовать author_id: user.id?

Алиф
06.10.2017
16:54:34
ActiveModel::UnknownAttributeError:
unknown attribute 'author_id' for Post.
@hardliner

Aldar
06.10.2017
16:56:10
а если это вернуть?
has_many :posts, dependent: :destroy, foreign_key: "author_id", class_name: "Post"

Vasiliy
06.10.2017
16:56:36
запусти консоль и там проверь

Eugene
06.10.2017
17:00:56
=> #<Post id: nil, title: nil, body: nil, author_id: nil, published_at: nil, created_at: nil, updated_at: nil>

Google

Eugene
06.10.2017
17:01:17
мне аж стало интересно

Алиф
06.10.2017
17:02:36
вот что та не так
class Post < ApplicationRecord
belongs_to :author, foreign_key: "author_id", class_name: 'User'
delegate :nickname, to: :author, prefix: true, allow_nil: true
# validates :published_at, :author, presence: true
validates :body, length: { maximum: 250 }
validates :title, length: { maximum: 100 }
before_create on: :create do
self.published_at ||= Time.now
end
end
http://tech.eshaiju.in/blog/2016/02/15/rails-5-belongs-to-associations-default-to-required-true/
вот это был проблема
rails 5 by defualt belongs_to
@vasivas @Eugene_Shved @hardliner
thanks
before_create on: :create do
self.published_at ||= Time.now
end

Admin
ERROR: S client not available

Алиф
06.10.2017
17:14:07
validates :published_at, :author, presence: true
http://prntscr.com/gu4cz0

Eugene
06.10.2017
17:14:37
что в валидации делает author
если там стоит author_id в схеме

Алиф
06.10.2017
17:15:33
Post.create!(title: "title", body: "body", author_id: u.id)
(0.2ms) BEGIN
(0.1ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Published at can't be blank
validates :published_at, :author_id, presence: true

Vasiliy
06.10.2017
17:15:57
погоди, так у тебя юзер же есть
у меня в проекте
belongs_to :user
validates :user, presence: true

Алиф
06.10.2017
17:17:12
@vasivas
class Post < ApplicationRecord
belongs_to :author, foreign_key: "author_id", class_name: 'User', optional: true
delegate :nickname, to: :author, prefix: true, allow_nil: true
validates :published_at, :author_id, presence: true
validates :body, length: { maximum: 250 }
validates :title, length: { maximum: 100 }
before_create on: :create do
self.published_at ||= Time.now
end
end

Google

Алиф
06.10.2017
17:17:49
почему ? error
ost.create!(title: "title", body: "body", author_id: u.id)
(0.2ms) BEGIN
(0.1ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Published at can't be blank

Vasiliy
06.10.2017
17:18:08
почитай про жизненый цикл ар
валидация
сохранение
before_validation


Алиф
06.10.2017
17:18:57
irb(main):003:0> Post.create(title: "title", body: "body", author_id: u.id)
(0.2ms) BEGIN
SQL (6.8ms) INSERT INTO "posts" ("title", "body", "author_id", "published_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["title", "title"], ["body", "body"], ["author_id", 2], ["published_at", "2017-10-06 17:21:21.816188"], ["created_at", "2017-10-06 17:21:21.817818"], ["updated_at", "2017-10-06 17:21:21.817818"]]
(6.1ms) COMMIT
=> #<Post id: 3, title: "title", body: "body", author_id: 2, published_at: "2017-10-06 17:21:21", created_at: "2017-10-06 17:21:21", updated_at: "2017-10-06 17:21:21">
irb(main):004:0>
ну
Failure/Error:
@post = Post.new(
title: Faker::Lorem.word,
body: Faker::Lorem.sentence,
author_id: user.id,
published_at: Faker::Time.between(DateTime.now - 30.days, DateTime.now + 30.days)
)
ActiveModel::UnknownAttributeError:
unknown attribute 'author_id' for Post.
:(
@vasivas
@Eugene_Shved
что за проблема
any help @vasivas


Eugene
06.10.2017
18:00:26
Походу тебе надо премиальная подписка на этот чат для дальнейшего решения проблемы. В пятницу вечером я вот не знаю кто будет помогать тебе
Попробуй закинуть на stackoverflow.com
Нужные log files у тебя уже имеются

Алиф
06.10.2017
19:24:11
@Eugene_Shved my accoutn is block stackoverflow.com
thanks for try to help

Anna
06.10.2017
19:26:51

Vasiliy
06.10.2017
19:34:52
По моему в России только так за грамматику английского переживают

Anna
06.10.2017
19:35:42
смотря какие ошибки