Как мне получить все записи 'link', кроме тех, в которых столбец 'url' пуст? Мой контроллер выглядит так:
def show
@user = User.find_by_username(params[:username])
@links = @user.links.all
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @links }
end
end
Заранее спасибо!
Редактировать # 1
Если я это сделаю:
@links = @user.all(:conditions => 'url != NULL')
Я получаю сообщение об ошибке:
NoMethodError in UsersController#show
undefined method `all' for #<User:0x2254f98>
А если я сделаю:
@links = @user.links.all(:conditions => 'url != NULL')
Я все еще получаю все ссылки, даже те, с пустыми полями URL ...
Редактировать # 2
Если я сделаю
@links = User.all(:conditions => 'url != NULL')
Я получаю
ActiveRecord::StatementInvalid in UsersController#show
SQLite3::SQLException: no such column: url: SELECT * FROM "users" WHERE (url != NULL)
А если я сделаю
@links = Link.all(:conditions => 'url != NULL')
Я все еще получаю все ссылки, даже те, с пустыми полями URL ...
Мне интересно, есть ли разница между NULL и пустым полем?
Редактировать # 3
Теперь мой код выглядит так:
def show
@user = User.find_by_username(params[:username])
@links = @user.links.all(:conditions => "url <> ''")
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @links }
end
end
Решение
#controller
@links = @user.links.not_null_url
#model
named_scope :not_null_url, :conditions => "url <> ''"
Это работает! Обязательно зайдите по ссылкам с:
#view
<% @links.each do |link| %>
А не:
#view
<% @user.links.each do |link| %>