Ruby on Rails里,如何用空列查询所有条目?

2026-04-11 19:492阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计597个文字,预计阅读时间需要3分钟。

Ruby on Rails里,如何用空列查询所有条目?

如何获取所有链接项目,并删除那些空白网址列?我的控制器看起来像这样:

rubydef show @user=User.find_by_username(params[:username]) @links=@user.links.all respond_to do |format| format. endend

如何获取所有“链接”条目,并删除那些空白的“网址”列?我的控制器看起来像这样:

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')

我仍然获得所有链接,即使是那些有空网址的链接……

编辑#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')

我仍然获得所有链接,即使是那些有空网址的链接……

我想知道这是否与空白字段之间有区别?

编辑#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| %> 它不是@user,它

User.all(:conditions => 'url != NULL')

编辑:

其实我有一个疑问.是“链接”用户表中的列还是模型?

编辑#2

你的意思是:@ user.links.all(:conditions => {:url =>!nil})

编辑#3

找到了! url IS NOT NULL或URL!= NULL或任何使用NULL的东西都无法解决您的问题,因为正如您所说,null和空字段之间存在差异.以下代码对我有用:

@user.links.all(:conditions => "url <> ''")

正如@klew建议的那样,如果你使用named_scope会更好:

Ruby on Rails里,如何用空列查询所有条目?

#model named_scope :not_null_url, :conditions => "url <> ''" #controller @user.links.not_null_url

本文共计597个文字,预计阅读时间需要3分钟。

Ruby on Rails里,如何用空列查询所有条目?

如何获取所有链接项目,并删除那些空白网址列?我的控制器看起来像这样:

rubydef show @user=User.find_by_username(params[:username]) @links=@user.links.all respond_to do |format| format. endend

如何获取所有“链接”条目,并删除那些空白的“网址”列?我的控制器看起来像这样:

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')

我仍然获得所有链接,即使是那些有空网址的链接……

编辑#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')

我仍然获得所有链接,即使是那些有空网址的链接……

我想知道这是否与空白字段之间有区别?

编辑#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| %> 它不是@user,它

User.all(:conditions => 'url != NULL')

编辑:

其实我有一个疑问.是“链接”用户表中的列还是模型?

编辑#2

你的意思是:@ user.links.all(:conditions => {:url =>!nil})

编辑#3

找到了! url IS NOT NULL或URL!= NULL或任何使用NULL的东西都无法解决您的问题,因为正如您所说,null和空字段之间存在差异.以下代码对我有用:

@user.links.all(:conditions => "url <> ''")

正如@klew建议的那样,如果你使用named_scope会更好:

Ruby on Rails里,如何用空列查询所有条目?

#model named_scope :not_null_url, :conditions => "url <> ''" #controller @user.links.not_null_url