2015-01-11 2 views
0

У меня есть постконтроллер, который позволяет вам выбрать профессию. У меня также есть рабочий контроллер, который имеет список профессий, хранящихся в разделенных запятыми. Например:Найти, если значение присутствует в списке

Сообщение имеет ряд под названием профессии, и позволяет только выбрать 1.

Работа имеет ряд под названием профессии, которые хранятся как это: бизнес, права, бухгалтерского учета.

Что я хотел бы сделать, это как только вы сохраните сообщение, перейдете на страницу, где показана работа, в которой профессия должности равна профессии профессии. (Только соответствующая работа)

Как я могу это сделать?

+0

Вы можете использовать SQL LIKE-запросы, например Work.where ("профессия LIKE?", "% # {@ Post.profession}%") –

ответ

0

Это похоже на то, что вы пытаетесь сделать.

posts_controller.rb

def create 
    @post = Post.create(post_params) 
    if @post.save 
    redirect_to some_other_path(post_id: @post.id) 
    else 
    # handle error 
    end 
end 

some_controller.rb

def some_action 
    @post = Post.find(params[:post_id]) 
    @works = Work.where("profession like ?", "%#{@post.profession}%") 
end 

Поскольку вы используете Postgres, вы можете использовать like который будет соответствовать модели в пределах поля. Это скорее функция поиска, чем способ связывания записей. Поэтому, если у вас есть должность, которая имеет профессию «рынка», то подобный «соответствует» и «маркетинг».

Это может оказаться более чистым и легким в том, чтобы Профессия была отдельной моделью. Сообщение может принадлежать, а Work может иметь_many.

+0

Привет, единственная проблема, с которой я столкнулась, - это где (профессия: @ post.profession), потому что профессия работы хранится в списке, таком как: бизнес, маркетинг, право, а @ post.profession - это как «маркетинг». Поэтому мне нужно заставить его посмотреть, найдет ли он это. Как мне это сделать? – sja

+0

Какую базу данных вы используете? – evanbikes

+0

im использование postgresql – sja